package Datos;
// Generated 15-dic-2012 9:31:07 by Hibernate Tools 3.2.1.GA


import java.sql.Date;
import java.util.HashSet;
import java.util.Set;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Set;
import java.util.Vector;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 * Empleado generated by hbm2java
 */
public class Empleado  implements java.io.Serializable {


     private int ci;
     private String nombre;
     private String apellido1;
     private String apellido2;
     private Date fechaNacimiento;
     private String estadoCivil;
     private String sexo;
     private String profesion;
     private String direccion;
     private String email;
     private int itemCargo;
     private int codigoDepartamento;

    public Empleado() {
    }

	
    public Empleado(int ci, String nombre, String apellido2, String estadoCivil, String sexo, String profesion, String direccion, String email, int itemCargo, int codigoDepartamento) {
        this.ci = ci;
        this.nombre = nombre;
        this.apellido2 = apellido2;
        this.estadoCivil = estadoCivil;
        this.sexo = sexo;
        this.profesion = profesion;
        this.direccion = direccion;
        this.email = email;
        this.itemCargo = itemCargo;
        this.codigoDepartamento = codigoDepartamento;
    }
    public Empleado(int ci, String nombre, String apellido1, String apellido2, Date fechaNacimiento, String estadoCivil, String sexo, String profesion, String direccion, String email, int itemCargo, int codigoDepartamento) {
       this.ci = ci;
       this.nombre = nombre;
       this.apellido1 = apellido1;
       this.apellido2 = apellido2;
       this.fechaNacimiento = fechaNacimiento;
       this.estadoCivil = estadoCivil;
       this.sexo = sexo;
       this.profesion = profesion;
       this.direccion = direccion;
       this.email = email;
       this.itemCargo = itemCargo;
       this.codigoDepartamento = codigoDepartamento;
    }
   
    public int getCi() {
        return this.ci;
    }
    
    public void setCi(int ci) {
        this.ci = ci;
    }
    public String getNombre() {
        return this.nombre;
    }
    
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getApellido1() {
        return this.apellido1;
    }
    
    public void setApellido1(String apellido1) {
        this.apellido1 = apellido1;
    }
    public String getApellido2() {
        return this.apellido2;
    }
    
    public void setApellido2(String apellido2) {
        this.apellido2 = apellido2;
    }
    public Date getFechaNacimiento() {
        return this.fechaNacimiento;
    }
    
    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }
    public String getEstadoCivil() {
        return this.estadoCivil;
    }
    
    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }
    public String getSexo() {
        return this.sexo;
    }
    
    public void setSexo(String sexo) {
        this.sexo = sexo;
    }
    public String getProfesion() {
        return this.profesion;
    }
    
    public void setProfesion(String profesion) {
        this.profesion = profesion;
    }
    public String getDireccion() {
        return this.direccion;
    }
    
    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }
    public String getEmail() {
        return this.email;
    }
    
    public void setEmail(String email) {
        this.email = email;
    }
    public int getItemCargo() {
        return this.itemCargo;
    }
    
    public void setItemCargo(int itemCargo) {
        this.itemCargo = itemCargo;
    }
    public int getCodigoDepartamento() {
        return this.codigoDepartamento;
    }
    
    public void setCodigoDepartamento(int codigoDepartamento) {
        this.codigoDepartamento = codigoDepartamento;
    }


//-------------------------------------------------------------------------
    public int cantTuplas() {
        return HibernateUtil.CantTuplas(resultado());
    }
 //--------------------------------------------------------------------------//
    public void insertar() {

        try {
            Session Sesion = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = Sesion.beginTransaction();
            Sesion.save(this);
            tx.commit();
            Sesion.close();
            JOptionPane.showMessageDialog(null, "SE INSERTARON LOS DATOS CORRECTAMENTE EN LA BD.", "MENSAJE", JOptionPane.WARNING_MESSAGE, null);

        } catch (HibernateException e) {
            System.out.println(" Error al INSERTAR  " + e.getMessage());
            Logger.getLogger(Empleado.class.getName()).log(Level.SEVERE, null, e);
        }

    }
//--------------------------------------------------------------------------//

    public void modificar() {

        try {

            Session Sesion = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = Sesion.beginTransaction();
            Sesion.update(this);
            tx.commit();
            Sesion.close();
            JOptionPane.showMessageDialog(null, "SE MODIFICARON LOS DATOS CORRECTAMENTE EN LA BD.", "MENSAJE", JOptionPane.WARNING_MESSAGE, null);

        } catch (HibernateException e) {
            System.out.println("Error al MODIFICAR  " + e.getMessage());
            Logger.getLogger(Empleado.class.getName()).log(Level.SEVERE, null, e);
        }
    }
//-----------------------------------------------------------------------------//

    public void eliminar() {

        try {

            Session Sesion = HibernateUtil.getSessionFactory().openSession();
            Transaction tx = Sesion.beginTransaction();
            Empleado t = getEmpleado();
            Sesion.delete(t);
            tx.commit();
            Sesion.close();
            JOptionPane.showMessageDialog(null, "SE ELIMINARON LOS DATOS CORRECTAMENTE EN LA BD.", "MENSAJE", JOptionPane.WARNING_MESSAGE, null);

        } catch (HibernateException e) {
            System.out.println("Error al ELIMINAR  " + e.getMessage());
            Logger.getLogger(Empleado.class.getName()).log(Level.SEVERE, null, e);
        }
    }
//-----------------------------------------------------------------------------//

    public boolean existeEmpleado(String nombre, String apellido1,String apellido2) {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction ts = session.getTransaction();
        ts.begin();
        ResultSet rs = null;
        try {
            String query = "SELECT * FROM Empleado "
                    + "WHERE "
                    + "nombre = '" +nombre+ "'" +
                    " and apellido1 ='" + apellido1 +"'" +
                    " and apellido2 ='"+apellido2 + "';";
            PreparedStatement ps = (PreparedStatement) session.connection().prepareStatement(query);
            rs = ps.executeQuery();

        } catch (Exception e) {
            Logger.getLogger(Empleado.class.getName()).log(Level.SEVERE, null, e);
        }

        ts.commit();
        session.close();
        return HibernateUtil.existe(rs);
    }

//--------------------------------------------------------------------------//

    public boolean existeID(int ci) {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction ts = session.getTransaction();
        ts.begin();
        ResultSet rs = null;
        try {
            String query = "SELECT * FROM Empleado "
                    + "WHERE "
                    + "ci = " + ci + "";
            PreparedStatement ps = (PreparedStatement) session.connection().prepareStatement(query);
            rs = ps.executeQuery();

        } catch (Exception e) {
            Logger.getLogger(Empleado.class.getName()).log(Level.SEVERE, null, e);
        }

        ts.commit();
        session.close();
        return HibernateUtil.existe(rs);
    }

//--------------------------------------------------------------------------//

    public ResultSet EjecutarConsultaSQL(String sql) {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction ts = session.getTransaction();
        ts.begin();
        ResultSet rs = null;

        try {
            String query = sql;
            PreparedStatement ps = (PreparedStatement) session.connection().prepareStatement(query);
            rs = ps.executeQuery();
        } catch (Exception e) {
            Logger.getLogger(Empleado.class.getName()).log(Level.SEVERE, null, e);
        }

        ts.commit();
        session.close();
        return rs;
    }

//-----------------------------------------------------------------------------//

    public String listar() {
        ResultSet rs = EjecutarConsultaSQL("select *from Empleado;");

        return HibernateUtil.mostrarTuplas(rs, "Lista de Empleado", new String[]{"CI", "NOMBRE", "APELLIDO1", "APELLIDO2", "FECHA_NAC","ESTADO_CIVIL","SEXO","PROFESION","DIRECCION","EMAIL"},
                new String[]{"ci", "nombre", "apellido1", "apellido2", "fechaNacimiento","estadoCivil","sexo","profesion","direccion","email"});
    }

//-----------------------------------------------------------------------------//

    public ResultSet resultado() {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction ts = session.getTransaction();
        ts.begin();
        ResultSet rs = null;

        try {
            String query = "SELECT * FROM Empleado;";
            PreparedStatement ps = (PreparedStatement) session.connection().prepareStatement(query);
            rs = ps.executeQuery();

        } catch (Exception e) {
            Logger.getLogger(Empleado.class.getName()).log(Level.SEVERE, null, e);
        }

        ts.commit();
        session.close();
        return rs;
    }
//-----------------------------------------------------------------------------//

    public Empleado getEmpleado() {

        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction tx = session.getTransaction();
        try {

            tx.begin();
            Empleado t = (Empleado) session.load(Empleado.class, getCi());
            return t;
        } catch (Exception e) {
            tx.rollback();
            Logger.getLogger(Empleado.class.getName()).log(Level.SEVERE, null, e);
        }
        return null;
    }

//--------------------------------------------------------------------------//


}


